home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Diamond Collection
/
The Diamond Collection (Software Vault)(Digital Impact).ISO
/
cdr47
/
sptdemo.zip
/
TAPUNTE.PRG
< prev
next >
Wrap
Text File
|
1995-02-28
|
9KB
|
306 lines
// ----------------------------------------------------------------------------
// (c) 1,994 Juan Miguel Sosso Prieto - Todos los derechos reservados
// Autor...: Juan Miguel Sosso
// Proyecto: Contabilidad Personal
// Módulo..: Mantenimiento de Apuntes
// Fecha...: Mon 16-05-94
// Hora....: 10:37:31
#include "inkey.ch"
#include "sptools.ch"
#include "tags.ch"
// ----------------------------------------------------------------------------
proc ManApuntes()
local oBrw
local oMenu
local oItem
DEFINE MENU oMenu AT MaxRow()
MENUITEM " &Modificar " ACTION EditApunte( oBrw )
MENUITEM " &Añadir " ACTION AddApunte( oBrw )
MENUITEM oItem PROMPT " &Filtrar " ;
ACTION FilApunte( oBrw, oItem )
MENUITEM " &Listado " ACTION LisApunte()
MENUITEM " &Eliminar " ACTION Eliminar( oBrw )
MENUITEM " &Salir " ACTION .t.
END MENU
oMenu:lOpened = .f.
DEFINE BROWSE oBrw SIZE MaxRow() - 1, 80 ALIAS Apunte ;
TITLE "APUNTES CONTABLES"
COLUMN "FECHA" DATA Apunte->dFECHA
COLUMN "GRUPO" DATA Left( cGrupoDesc(), 18 )
COLUMN "DESCRIPCION" DATA Apunte->cDESC
COLUMN "INGRESO" DATA Transform( Apunte->nINGRESO, "@Z9,999,999" )
COLUMN "GASTO" DATA Transform( Apunte->nGASTO, "@Z9,999,999" )
ON DBLCLICK DO EditApunte( oBrw )
END BROWSE
Apunte->( OrdSetFocus( "Fecha" ) )
oBrw:GoBottom()
ACTIVATE BROWSE oBrw MENUBAR oMenu ACTION DispFoot()
Apunte->( DbClearFilter() )
return
// ----------------------------------------------------------------------------
static proc EditApunte( oBrw )
local GetList := {}
local aField := {}
local oWnd
DEFINE WINDOW oWnd SIZE 13, 49 TITLE "APUNTE"
ACTIVATE WINDOW oWnd
Apunte->( SaveFields( aField ) )
@ 2, 3 SAY "Fecha......:" GET Apunte->dFECHA ;
MESSAGE "Fecha del apunte"
@ 4, 3 SAY "Grupo:" GET Apunte->nGRUPO VALID lDispGrupo() ;
MESSAGE "Grupo contable al que pertenece el apunte - F6 acceso a tabla"
if lDispGrupo()
Grupo->nINGRESO -= Apunte->nINGRESO
Grupo->nGASTO -= Apunte->nGASTO
endif
@ 6, 3 SAY "Descripción:" GET Apunte->cDESC ;
MESSAGE "Concepto del apunte"
@ 8, 3 SAY "Ingreso....:" GET Apunte->nINGRESO ;
MESSAGE "Cantidad a ingresar"
@ 8, 28 SAY "Gasto....:" GET Apunte->nGASTO ;
MESSAGE "Cantidad a descontar"
@ 10, 20 BUTTON " &Aceptar " ACTION BTN_OK ;
MESSAGE "Grabar el apunte"
@ 10, 34 BUTTON " &Cancelar " ACTION BTN_CANCEL ;
MESSAGE "Descartar las modificaciones"
SetKey( K_F6, { || BuscaGrupo() } )
READ
SetKey( K_F6, nil )
if LastKey() == K_ESC
Apunte->( RestFields( aField ) )
else
Config->nINGRESO -= aField[ Apunte->( FieldPos( "nINGRESO" ) ) ]
Config->nGASTO -= aField[ Apunte->( FieldPos( "nGASTO" ) ) ]
Config->nINGRESO += Apunte->nINGRESO
Config->nGASTO += Apunte->nGASTO
if ! Empty( Apunte->nGRUPO )
Grupo->nINGRESO += Apunte->nINGRESO
Grupo->nGASTO += Apunte->nGASTO
endif
oBrw:RefreshAll()
endif
DEACTIVATE WINDOW oWnd
return
// ----------------------------------------------------------------------------
static proc AddApunte( oBrw )
local nActual := Apunte->( RecNo() )
Apunte->( DbAppend() )
Apunte->dFECHA = Date()
EditApunte( oBrw )
if LastKey() == K_ESC
Apunte->( DbDelete() )
Apunte->( DbGoto( nActual ) )
else
oBrw:GoBottom()
oBrw:RefreshAll()
endif
return
// ----------------------------------------------------------------------------
static proc FilApunte( oBrw, oItem )
local nComo
local cFiltro := Space( Len( Apunte->cDESC ) )
local nGrupo
if oItem:cItem == " &Filtrar "
nComo = nMsgBox( "¿Cómo desea el filtrado", { " Por &grupo ", ;
" Por &concepto " } )
if nComo != 0
if nComo == 1
BuscaGrupo( .t. )
if LastKey() != K_ESC
nGrupo = Grupo->nGRUPO
Apunte->( DbSetFilter( { || Apunte->nGRUPO == nGrupo } ) )
oBrw:GoTop()
oBrw:RefreshAll()
oItem:cItem = " &Desfil. "
endif
else
if lInputBox( "Concepto a filtrar:", @ cFiltro )
cFiltro = Upper( AllTrim( cFiltro ) )
Apunte->( DbSetFilter( { || cFiltro $ Upper( Apunte->cDESC ) } ) )
oBrw:GoTop()
oBrw:RefreshAll()
oItem:cItem = " &Desfil. "
endif
endif
endif
else
Apunte->( DbClearFilter() )
oBrW:GoBottom()
oBrw:RefreshAll()
oItem:cItem = " &Filtrar "
endif
return
// ----------------------------------------------------------------------------
static proc Eliminar( oBrw )
if nMsgBox( "¿Está seguro de querer eliminar el apunte?", ;
{ " &Eliminar ", " &Cancelar " } ) == 1
Config->nINGRESO -= Apunte->nINGRESO
Config->nGASTO -= Apunte->nGASTO
if Grupo->( DbSeek( Apunte->nGRUPO, .f. ) )
Grupo->nINGRESO -= Apunte->nINGRESO
Grupo->nGASTO -= Apunte->nGASTO
endif
Apunte->( DbDelete() )
Apunte->( DbSkip() )
oBrw:RefreshAll()
endif
return
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
static function cGrupoDesc()
return If( Grupo->( DbSeek( Apunte->nGRUPO, .f. ) ), Grupo->cDESC, ;
PadR( "Grupo inexistente" ,Len( Grupo->cDESC ) ) )
// ----------------------------------------------------------------------------
static function lDispGrupo()
@ 4, 14 SAY "[" + cGrupoDesc() + "]"
return Grupo->( Found() )
// ----------------------------------------------------------------------------
proc BuscaGrupo( lNoChange )
local oBrw
DEFAULT lNoChange := .f.
SetKey( K_F6, nil )
DEFINE BROWSE oBrw SIZE MaxRow() - 5, 37 ALIAS Grupo ;
COLSEP " " ;
TITLE "GRUPOS CONTABLES" ;
WRAP
COLUMN "Nº" DATA Grupo->nGRUPO
COLUMN "DESCRIPCION" DATA Grupo->cDESC
ON DBLCLICK DO .t.
ON KEY K_ENTER DO .t.
ENDBROWSE
// if Grupo->( EoF() )
oBrw:GoTop()
// endif
ACTIVATE BROWSE oBrw
if ! lNoChange .and. LastKey() != K_ESC
Apunte->nGRUPO = Grupo->nGRUPO
lDispGrupo()
endif
SetKey( K_F6, { || BuscaGrupo() } )
return
// ----------------------------------------------------------------------------
static proc DispFoot()
@ MaxRow(), 64 SAY Transform( Config->nINGRESO - Config->nGASTO, ;
"9,999,999 Ptas" ) ;
COLOR Config->cCLRMNU ;
ABSOLUTE
return
// ----------------------------------------------------------------------------
static proc LisApunte()
local GetList := {}
local oWnd, oRep
local dInicial
local dFinal := Date()
Apunte->( DbSetOrder( APUNTE_FECHA ) )
Apunte->( DbGoTop() )
dInicial = Apunte->dFECHA
DEFINE WINDOW oWnd SIZE 10, 30 TITLE "Listado de apuntes"
ACTIVATE WINDOW oWnd
@ 2, 2 SAY "Fecha inicial:" GET dInicial
@ 3, 2 SAY "Fecha final..:" GET dFinal
READ
if LastKey() != K_ESC
Apunte->( DbSeek( dInicial ) )
DEFINE REPORT oRep
HEADER "Contabilidad Personal - Listado de apuntes de: " + ;
SubStr( BliSerNum(), 5 )
HEADER "Entre las fechas: " + DToC( dInicial ) + " y " + DToC( dFinal ) + ;
Space( 30 ) + "Pág. #"
HEADER ""
COLUMN "FECHA" DATA Apunte->dFECHA
COLUMN "GRUPO" DATA cGrupoDesc()
COLUMN "DESCRIPCION" DATA Apunte->cDESC
COLUMN "INGRESO" DATA Transform( Apunte->nINGRESO, "9,999,999" )
COLUMN "GASTO" DATA Transform( Apunte->nGASTO, "9,999,999" )
END REPORT
ACTIVATE REPORT oRep ;
WHILE ! Apunte->( EoF() ) .and. Apunte->dFECHA <= dFinal ;
ACTION Apunte->( DbSkip() )
endif
DEACTIVATE WINDOW oWnd
return
// ----------------------------------------------------------------------------